くらめその情シス:AWSClientVPNをAzureADのSSOで構成する
情シス@アノテーションの飯島です。
AWS ClientVPNのSAML認証がAzureADに対応しています。 基幹システムのIdPをAzureADに切り替えた為、社内VPNもAWS ClientVPNのSSOに移行しました。
この記事では、AWS ClientVPNをAzureADのSSOで利用する環境の構築手順、特にAzureAD側の設定と、AWS Client VPN側の認証設定について詳しくご紹介します。手順はWindows環境で構築を想定したものになります。また、以下公式の手順を元にしています。
- AWS側 手順
https://docs.aws.amazon.com/ja_jp/vpn/latest/clientvpn-admin/client-authentication.html
- Microsoft(Azure)側 手順
https://docs.microsoft.com/ja-jp/azure/active-directory/saas-apps/aws-clientvpn-tutorial
構成
今回作成したのは以下の構成となります。
AWS側ではVPCの他に、IAM、CertificateManagerの設定が必要となり、AzureAD側もSSO用の設定が必要になります。
準備
まずは、ClientVPNを始めるために必要な準備について記載します。
(1)VPC サブネット構成
事前に次の2つの構成を決めておく必要があります。
- ターゲットネットワーク
エンドポイントと紐づくENIが作成されるサブネットになります。 想定する同時接続数を考慮してサブネットを構成し、作成しておきます。
- VPNクライアントへの割り当てCIDR
クライアント側に割り当てられるIPアドレスの範囲になります。 後ほどClientVPNの設定時に割り当てるため、ひとまず決めておくだけで大丈夫です。 VPCの構成やポリシーについては以下の記事にわかりやすくまとめられています。
AWS Client VPN のコンポーネントを絵に描いて理解しつつ NetworkACL や SecuriryGroup をどこまで絞れるのか試してみた
(2)サーバー証明書のCertificate Managerへの登録
SSL通信のため、Certificate Managerに登録するサーバー証明書が必要になります。 証明書の考え方について以下の記事がわかりやすく説明しているのでおすすめです。
また、サーバー証明書の作成方法やCertificate Managerへの登録の方法は以下の記事を参考にしてください。
AzureAD側設定
Azure AD 側に AWS ClientVPNとSSOで連携するためのアプリを登録します。
(1)アプリの登録
メニューの「エンタープライズアプリケーション」より「新しいアプリケーション」を選択し、検索フォームよりAWS ClentVPNを検索し、選択します。 名前には任意のアプリケーション名を入力して「作成」を選択します。
(2)シングルサインオンの設定
シングルサインオンの設定「基本的なSAML構成」についてパラメータに以下を設定します。
- エンティティID:urn:amazon:webservices:clientvpn
- 応答URL:https://127.0.0.1:35001
- サインオンURL:https://127.0.0.1:35001
※注意事項として以下のコンフィグの修正が必要になります。
azureのメニューに戻り「アプリの登録」→「すべてのアプリケーション」より登録アプリケーション((1)で登録したアプリケーション )を選択し、[マニフェスト] から以下の修正を行い[保存]します。
【修正前】 応答 URL: https://127.0.0.1:35001
【修正後】 応答 URL: http://127.0.0.1:35001
(3)ユーザーとグループの設定
「エンタープライズアプリケーション」より、作成したAWSClientVPNのアプリケーションを選択し「概要」、「ユーザーとグループの割り当て」から「ユーザーまたはグループの追加」でクライアントVPNを利用する対象メンバー、グループを追加します。
(4)メタデータのダウンロードと、AWSのIAMへアップロード
「エンタープライズアプリケーション」より、作成したAWSClientVPNのアプリケーションを選択し「概要」、「シングルサインオンの設定」「SAML署名証明書」にある「フェデレーションメタデータXML」をダウンロードします。
ダウンロードした「フェデレーションメタデータXML」はAWSのIAMのIDプロバイダに新規のプロバイダとして追加登録し、Azure側設定は完了です。
AWS Client VPN 側の設定
(1)クライアントVPNエンドポイントの作成
VPCより「クライアントVPNエンドポイント」→「クライアントVPNエンドポイントの作成」を選択します。
クライアントIPv4 CIDRには「VPNクライアントへの割り当てCIDR 」で決めたCIDRを入力してください。 認証情報の欄では、Certificate Manager の ARN と IAM の ARN をそれぞれ登録します。 認証オプションは、「ユーザーベースの認証を使用」「統合認証」を選択します。
接続ログ記録、クライアント接続ハンドラ、その他のオプションパラメータに必要な設定を入力し、「クライアントVPNエンドポンとの作成」を押下します。認証情報を除く、設定情報の詳細については以下の記事にわかりやすく記載されています。
[アップデート] 接続元 IP 制限もできるように! AWS Client VPN で クライアント接続ハンドラ機能がサポートされました
AWS Client VPN に接続したら名前解決ができなくなったのでカスタム DNS サーバーとは何かを調べ直してみた
(2)ターゲットネットワークとの関連付け
作成したクライアントVPNエンドポイントを選択し、関連付けタブの関連付けを選択します。
最初に作成したターゲットネットワークを関連付けるサブネットとして選択し、関連付けを選択してください。 ルートテーブルに接続させたいサブネットへのルーティングを追加します。
接続確認
AWSよりVPNクライアントをインストールし、「クライアント設定のダウンロード」からダウンロードしたクライアントモジュールを登録します。
ブラウザがたちあがり、認証画面が表示される場合はAzureADのユーザー情報を入力します。ブラウザで「http://127.0.0.1:35001/」「認証の詳細を受信、詳細を処理中です。このウィンドウをいつでも閉じることができます。」というページが開けば認証完了となります。
接続を選択し、「接続済み」と表示されればVPN接続完了です。
おわりに
今回は、AWS ClientVPN を AzureAD の SSO で利用する環境の構築手順を駆け足でご紹介させて頂きました。 Developers IO 内のリンクを沢山つけさせていただきましたが、Developers IOではこの他にもAzureの設定や、AWS Client VPN 設定について多くのブログが記載されていますので、タグよりぜひ確認してみてください。
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。 「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。 現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイト をご覧ください。